package br.com.sadim.hospital;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

import br.com.sadim.paciente.Paciente;
import br.com.sadim.paciente.PacienteRN;
import br.com.sadim.hospital.HoraConsulta;

@ManagedBean(name="agendaBean")
@RequestScoped
public class SistemaAgendamento {
    ConsultaRN consultaRN = new ConsultaRN();
    PacienteRN pacienteRN = new PacienteRN();
    UsuarioRN usuarioRN = new UsuarioRN();
   	public String sincronizarAgendaConsultas(){
   		List<Usuario> listaMedicos = new ArrayList<Usuario>();
   		for(Usuario usuario : usuarioRN.getList()){
   			if(usuario.getTipoUsuario().equals(TipoUsuario.MEDICO))
   				listaMedicos.add(usuario);
   		}
   		
   		for(Paciente p : pacienteRN.getList()){
   			Consulta consulta = new Consulta();
   			consulta.setPaciente(p);
   			int random =  new Random().nextInt((listaMedicos.size()));;
   			consulta.setMedico(listaMedicos.get(random));
   			int pick = new Random().nextInt(HoraConsulta.values().length);
   		     HoraConsulta horaConsulta = HoraConsulta.values()[pick];
   			consulta.setDataConsulta(new Date());
   			boolean horaLivre = true;
   			for(Consulta c : consultaRN.getByMedico(consulta.getMedico().getIdUsuario())){
   				if(c.getDataConsulta().equals(consulta.getDataConsulta()) && (c.getHoraConsulta().equals(horaConsulta) ))
   					horaLivre=false;
   			}
   			
   			if (horaLivre){
   				consulta.setHoraConsulta(horaConsulta);
   			    consultaRN.salvar(consulta);
   			}
   			
   			
   		}
	   return "agendaSincronizada";
   		
   		
   	}
}
